package pe.edu.upc.dew.grupo02.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import pe.edu.upc.dew.grupo02.model.Tarifa;
import pe.edu.upc.dew.grupo02.model.TipoEntrada;

public class TarifaDao extends SimpleJdbcDaoSupport implements ITarifa {

	private RowMapper<Tarifa> mapper;
	
	public TarifaDao()
	{
			mapper = new RowMapper<Tarifa>() {
	        public Tarifa mapRow(ResultSet rs, int rowNum) throws SQLException {
	        	
	            Tarifa tarifa = new Tarifa();
	            tarifa.setDia(rs.getInt("dia"));
	            tarifa.setFl3d(rs.getBoolean("fl3d"));
	            tarifa.setMonto(rs.getDouble("monto"));
	            
	            TipoEntrada tipoEntrada=new TipoEntrada();
	            tipoEntrada.setCoTipoEntrada(rs.getInt("cotipoEntrada"));
	            tipoEntrada.setNombre(rs.getString("nombre"));
	            
	            tarifa.setTipoEntrada(tipoEntrada);
	            
	            return tarifa;
	        }
	    };
	}
	
	
	@Override
	public void crear(Tarifa tarifa) {
		getSimpleJdbcTemplate().update(
				"insert into tarifa(cotipoentrada,dia,fl3d,monto) values(?,?,?,?)",
				tarifa.getTipoEntrada().getCoTipoEntrada(),tarifa.getDia(),tarifa.isFl3d(),tarifa.getMonto());
	}

	@Override
	public void eliminar(Tarifa tarifa) {
		getSimpleJdbcTemplate().update("delete from tarifa where cotipoentrada=? and dia=? and fl3d=?",tarifa.getTipoEntrada().getCoTipoEntrada(),tarifa.getDia(),tarifa.isFl3d());
		
	}

	@Override
	public Tarifa getTarifa(Tarifa tarifa) {
		return getSimpleJdbcTemplate().queryForObject("select cotipoentrada,dia,fl3d,monto,nombre from " +
													"tarifa join tipoentrada on tarifa.cotipoEntrada=tipoEntrada.cotipoentrada " +
													"where cotipoentrada=? and dia=? and fl3d=?", mapper, tarifa.getTipoEntrada().getCoTipoEntrada(),tarifa.getDia(),tarifa.isFl3d());
	}

	@Override
	public void actualizar(Tarifa tarifa) {
		getSimpleJdbcTemplate().update("update tarifa set monto=? where cotipoentrada=? and dia=? and fl3d=? ",tarifa.getMonto(), tarifa.getTipoEntrada().getCoTipoEntrada(),tarifa.getDia(),tarifa.isFl3d());
		
	}

	@Override
	public List<Tarifa> getTarifas() {
		
		return getSimpleJdbcTemplate().query("select cotipoentrada,dia,fl3d,monto,nombre from " +
													"tarifa join tipoentrada on tarifa.cotipoEntrada=tipoEntrada.cotipoentrada",mapper);
	}

}
